/*
 * EstoqueProdutoAS.java
 * 
 * Created on 04/10/2007, 07:48:40
 * 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package tcc.applicationService.Produto;

import tcc.dao.estoque.ItemEstoqueProdutoDao;
import tcc.domain.estoque.produto.ItemEstoqueProduto;
import tcc.domain.estoque.produto.TransacaoEstoqueProduto;
import tcc.domain.produto.Produto;
import tcc.domain.solicitacao.componente.SolicitacaoComponente;
import tcc.exception.business.TccBusinessException;
import tcc.exception.system.TccASException;
import tcc.util.PersistenceUtil;

public class EstoqueProdutoAS {
    /**
     * Creates a new instance of EstoqueComponenteAS
     */
    private EstoqueProdutoAS() {
    }
    private static EstoqueProdutoAS instance;

    public static synchronized EstoqueProdutoAS getIsntance() {
        if (instance == null) {
            instance = new EstoqueProdutoAS();
        }
        return instance;
    }

    public void adicionarItem(Produto c, Double qtd) throws TccBusinessException, TccASException {

        PersistenceUtil.getInstance().getTransaction().begin();
        try {
            ItemEstoqueProdutoDao dao = new ItemEstoqueProdutoDao();
            ItemEstoqueProduto item = dao.findByProduto(c);
            item.setQuantidadeRestante(item.getQuantidadeRestante()+qtd);

            TransacaoEstoqueProduto tx = new TransacaoEstoqueProduto();
//        } catch (TccBusinessException ex) {
//            PersistenceUtil.getInstance().getTransaction().rollback();
//            throw ex;
        } catch (Exception ex) {
            PersistenceUtil.getInstance().getTransaction().rollback();
            throw new TccASException(ex);
        }
    }

    public void removerProduto(Produto c, Double qtd) throws TccBusinessException, TccASException {
        adicionarItem(c, Double.valueOf(-qtd.doubleValue()));
    }

    public void alocarItemsPorProduto(Produto produto) {
    }
    public void receberComponentesDaSolicitacao(SolicitacaoComponente solicitacao) {
            
    }
}
